import { IPSModelObject } from '../../ipsmodel-object';
import { IPSDataEntity } from '../ipsdata-entity';
import { IPSDEACMode } from '../ac/ipsdeacmode';
import { IPSDEFieldBase } from './ipsdefield-base';
import { IPSDEFieldObject } from './ipsdefield-object';
import { IPSDEDataSet } from '../ds/ipsdedata-set';
import { IPSLanguageRes } from '../../res/ipslanguage-res';
import { IPSSysImage } from '../../res/ipssys-image';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEFUIItem
 */
export interface IPSDEFUIItem extends IPSDEFieldObject, IPSModelObject, IPSDEFieldBase {
  /**
   * 标题语言资源
   *
   * @type {IPSLanguageRes}
   */
  getCapPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 标题语言资源
   *
   * @type {IPSLanguageRes}
   */
  get capPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 标题语言资源（必须存在）
   *
   * @type {IPSLanguageRes}
   */
  getCapPSLanguageResMust(): IPSLanguageRes;

  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 编辑器参数集合
   * @type {IModel}
   */
  editorParams: IModel;

  /**
   * 编辑器样式
   * @type {string}
   */
  editorStyle: string;

  /**
   * 编辑器类型
   * @type {string}
   */
  editorType: string;

  /**
   * 最大值（字符串）
   * @type {string}
   */
  maxValueString: string;

  /**
   * 最小字符串长度
   * @type {number}
   * @default 0
   */
  minStringLength: number;

  /**
   * 最小值（字符串）
   * @type {string}
   */
  minValueString: string;

  /**
   * 原始标题
   * @type {string}
   */
  originCaption: string;

  /**
   * 输出代码表配置模式
   * @description 值模式 [实体属性界面配置输出代码表配置] {0：无、 1：只输出选择项、 2：输出子项 }
   * @type {( number | 0 | 1 | 2)}
   * @default 0
   */
  outputCodeListConfigMode: number | 0 | 1 | 2;

  /**
   * 输入提示语言资源
   *
   * @type {IPSLanguageRes}
   */
  getPHPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 输入提示语言资源
   *
   * @type {IPSLanguageRes}
   */
  get pHPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 输入提示语言资源（必须存在）
   *
   * @type {IPSLanguageRes}
   */
  getPHPSLanguageResMust(): IPSLanguageRes;

  /**
   * 图标图片资源对象
   *
   * @type {IPSSysImage}
   */
  getPSSysImage(): IPSSysImage | null;

  /**
   * 图标图片资源对象
   *
   * @type {IPSSysImage}
   */
  get psSysImage(): IPSSysImage | null;

  /**
   * 图标图片资源对象（必须存在）
   *
   * @type {IPSSysImage}
   */
  getPSSysImageMust(): IPSSysImage;

  /**
   * 输入提示信息
   * @type {string}
   */
  placeHolder: string;

  /**
   * 数据精度
   * @type {number}
   * @default 0
   */
  precision: number;

  /**
   * 引用链接实体视图代码标识
   * @type {string}
   */
  refLinkPSDEViewCodeName: string;

  /**
   * 引用多项选择实体视图代码标识
   * @type {string}
   */
  refMPickupPSDEViewCodeName: string;

  /**
   * 引用实体自填模式
   *
   * @type {IPSDEACMode}
   */
  getRefPSDEACMode(): IPSDEACMode | null;

  /**
   * 引用实体自填模式
   *
   * @type {IPSDEACMode}
   */
  get refPSDEACMode(): IPSDEACMode | null;

  /**
   * 引用实体自填模式（必须存在）
   *
   * @type {IPSDEACMode}
   */
  getRefPSDEACModeMust(): IPSDEACMode;

  /**
   * 引用实体数据集
   *
   * @type {IPSDEDataSet}
   */
  getRefPSDEDataSet(): IPSDEDataSet | null;

  /**
   * 引用实体数据集
   *
   * @type {IPSDEDataSet}
   */
  get refPSDEDataSet(): IPSDEDataSet | null;

  /**
   * 引用实体数据集（必须存在）
   *
   * @type {IPSDEDataSet}
   */
  getRefPSDEDataSetMust(): IPSDEDataSet;

  /**
   * 引用实体对象
   *
   * @type {IPSDataEntity}
   */
  getRefPSDataEntity(): IPSDataEntity | null;

  /**
   * 引用实体对象
   *
   * @type {IPSDataEntity}
   */
  get refPSDataEntity(): IPSDataEntity | null;

  /**
   * 引用实体对象（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getRefPSDataEntityMust(): IPSDataEntity;

  /**
   * 引用单项选择实体视图代码标识
   * @type {string}
   */
  refPickupPSDEViewCodeName: string;

  /**
   * 字符串长度
   * @type {number}
   * @default 0
   */
  stringLength: number;

  /**
   * 应用模式
   * @description 值模式 [实体属性界面模式] {DEFAULT：默认模式、 CUSTOM：用户自定义、 MOBILEDEFAULT：移动端默认模式、 APPDEFAULT：应用默认模式、 MODE1：模式1、 MODE2：模式2、 MODE3：模式3、 MODE4：模式4、 MODE5：模式5、 MODE6：模式6、 MODE7：模式7、 MODE8：模式8、 MODE9：模式9 }
   * @type {( string | 'DEFAULT' | 'CUSTOM' | 'MOBILEDEFAULT' | 'APPDEFAULT' | 'MODE1' | 'MODE2' | 'MODE3' | 'MODE4' | 'MODE5' | 'MODE6' | 'MODE7' | 'MODE8' | 'MODE9')}
   */
  uIMode: string | 'DEFAULT' | 'CUSTOM' | 'MOBILEDEFAULT' | 'APPDEFAULT' | 'MODE1' | 'MODE2' | 'MODE3' | 'MODE4' | 'MODE5' | 'MODE6' | 'MODE7' | 'MODE8' | 'MODE9';

  /**
   * 值格式化
   * @type {string}
   * @default %1$s
   */
  valueFormat: string;

  /**
   * 允许空值输入
   * @type {boolean}
   * @default true
   */
  allowEmpty: boolean;

  /**
   * 移动端模式
   * @type {boolean}
   * @default false
   */
  mobileMode: boolean;

  /**
   * 需要代码表配置
   * @type {boolean}
   * @default false
   */
  needCodeListConfig: boolean;
}
